package com.ece.devirtualizus.Dao;

import java.util.ArrayList;
import java.util.List;

import android.util.Log;

import com.ece.devirtualizus.ModelDto.Reglage;
import com.parse.ParseException;
import com.parse.ParseObject;
import com.parse.ParseQuery;
import com.parse.ParseUser;
import com.parse.SaveCallback;

public class ReglageDao implements IReglageDao {

	@Override
	public void setReglages(String UserID) {
		ParseQuery<ParseObject> query = ParseQuery.getQuery("ReglagePersonne");
		List<ParseObject> reglageParse = new ArrayList<ParseObject>();
		query.whereEqualTo("IdUser", UserID);
		try {
			reglageParse = query.find();
			Log.i("FirstConnectionDao.getreglageParse","getreglageParse : "+reglageParse.toString());
			Reglage.setBoolNotif(reglageParse.get(0).getBoolean("notifActive"));
			Reglage.setBoolSound(reglageParse.get(0).getBoolean("soundActive"));
			Reglage.setID(reglageParse.get(0).getObjectId());
			
		} catch (ParseException e1) {
			e1.printStackTrace();
		}	
		catch(IndexOutOfBoundsException e2){
			Log.e("setReglages", e2.getMessage());
		}
	}

	@Override
	public boolean saveReglages() {
		List<ParseObject> reglageParse = new ArrayList<ParseObject>();
		ParseQuery<ParseObject> queryReglageKeySender = ParseQuery.getQuery("ReglagePersonne");
		queryReglageKeySender.whereEqualTo("IdUser", ParseUser.getCurrentUser().getObjectId());
		try {
			reglageParse = queryReglageKeySender.find();
			reglageParse.get(0).put("IdUser", ParseUser.getCurrentUser().getObjectId());
		    reglageParse.get(0).put("notifActive", Reglage.getBoolNotif());
		    reglageParse.get(0).put("soundActive", Reglage.getBoolSound());
		    reglageParse.get(0).saveInBackground();
		    return true;
		} catch (ParseException e1) {
			// TODO Auto-generated catch block
			Log.e("setReglages", e1.getMessage());
			e1.printStackTrace();
			return false;
		}catch(IndexOutOfBoundsException e2){
			Log.e("setReglages", e2.getMessage());
			ParseObject query=new ParseObject("ReglagePersonne");
			query.put("IdUser", ParseUser.getCurrentUser().getObjectId());
			query.put("notifActive", Reglage.getBoolNotif());
			query.put("soundActive", Reglage.getBoolSound());
			query.saveInBackground(new SaveCallback() {
				@Override
				public void done(ParseException e) {
					if (e == null) {
						setReglages(ParseUser.getCurrentUser().getObjectId());
					} else {
						Log.e("com.parse.push",
								"failed to subscribe for push",
								e);
					}
				}
			});
			return false;
		}
		 catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				Log.e("saveReglages", "" + e.getMessage());
				return false;
			}
		
	}
	

}
